home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / lmitool / lmi.dem < prev    next >
Text File  |  1999-09-16  |  3KB  |  75 lines

  1. getf(SCI+'/demos/lmitool/lmidem.sci','c');
  2. mode(0);
  3. x_message(['      ';
  4. 'LMITOOL is a Scilab package for LMI optimization';
  5.       '           ';
  6. 'It can solve the following problem';
  7.       '                 ';
  8.       '   minimize  f(X1,...,XM)  ';
  9.       'subject to the LME constraints: ';
  10.       '   Gi(X1,...,XM)=0,  i=1,2,...,p,';
  11.       'and the LMI constraints:  ';
  12.       '   Hj(X1,...,XM)>=0,  j=1,2,...,q.';
  13.       '              ';
  14.       'where';
  15. 'X1,...,XM are unknown real matrices';
  16. 'f is the objective function, a linear scalar function of the entries of the X''s,';
  17. 'Gi''s are affine matrix functions of the entries of the X''s,';
  18. 'Hj''s are affine symmetric matrix functions of the entries of the X''s.';
  19.       '            ';
  20. 'For a detailed description and examples consult: ';
  21.       '          ''LMITOOL: a Package for LMI Optimization in Scilab, User''s Guide'' ';
  22.       '          ';
  23.       '          ';
  24. 'LMITOOL uses Semidefinite Programming package SP developed by L. Vandenberghe and S. Boyd.'])
  25.  
  26.  
  27. %demo_=x_choose(['H-infinity gain';'Output Feedback';'Sylvester equation'],...
  28. ['This is a sample of LMI problems that LMITOOL can solve';
  29. 'Select a problem (other examples are given in demos/lmitool directory)']);
  30. select %demo_
  31. case 0
  32.   error('LMI demo STOPS!');
  33. case 1
  34.    lmidem(SCI+'/demos/lmitool/normopt.sci');
  35.    getf(SCI+'/demos/lmitool/normopt.sci','c');
  36.    x_message(['Let''s try a simple example with 3 states';...
  37.               'Edit below A,B,C,D matrices']);
  38.    [ok,A,B,C,D]=getvalue('Enter A, B, C, D matrices',['A';'B';'C';'D'],...
  39.    list('mat',[3,3],'mat',[3,2],'mat',[2,3],'mat',[2,2]),...
  40.    ['[0,1,0;2,3,1;-1,-2,0]','[1,0;-2,1;0,1]','[1,2,0;0,1,-2]','[0,0;0,0]']);
  41.    if ok then
  42.    [X,gopt]=normopt(A,B,C,D);
  43.    disp(gopt, 'optimal gama found is:')
  44.    disp(gopt-h_norm(syslin('c',A,B,C,D)),...
  45.         'check: gopt-h_norm(syslin(''c'',A,B,C,D)=')
  46.       else
  47.    error('LMI demo STOPS!');
  48. end
  49. case 2
  50.    lmidem(SCI+'/demos/lmitool/of.sci');
  51.    getf(SCI+'/demos/lmitool/of.sci','c');
  52.    x_message(['Let''s try a simple example with 3 states';...
  53.    'Enter A,B,C matrices']);
  54.    [ok,A,B,C]=getvalue('Edit below A, B, C matrices',['A';'B';'C'],...
  55.    list('mat',[3,3],'mat',[3,2],'mat',[2,3]),...
  56.    ['[0,1,0;2,3,1;-1,-2,0]','[1,0;-2,1;0,1]','[1,2,0;0,1,-2]']);
  57.    if ok then
  58.    [P,Q]=of(A,B,C);
  59.    disp(P,Q);
  60.       else
  61.    error('LMI demo STOPS!');
  62.    end
  63. case 3
  64.    lmidem(SCI+'/demos/lmitool/sylvester.sci');
  65.    getf(SCI+'/demos/lmitool/sylvester.sci','c');
  66.    x_message(['Let''s try a simple example with 3 states';...
  67.    'Enter A,B,C matrices']);
  68.    [ok,A,B,C]=getvalue('Edit below A, B, C matrices',['A';'B';'C'],...
  69.    list('mat',[3,3],'mat',[2,2],'mat',[3,2]),...
  70.    ['[0,1,0;2,3,1;-1,-2,0]','[1,0;-2,1]','[1,2;0,1;1,-2]']);
  71.    [X]=sylvester(A,B,C,'c');
  72.    disp(X, 'X found is:')
  73.    disp(A*X+X*B-C ,'Check: A*X+X*B-C =')
  74. end   
  75.